package org.wang.service.impl;

import com.baomidou.mybatisplus.plugins.Page;
import org.wang.domain.Employee;
import org.wang.domain.Tenant;
import org.wang.mapper.EmployeeMapper;
import org.wang.mapper.TenantMapper;
import org.wang.query.TenantQuery;
import org.wang.service.ITenantService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.wang.util.PageList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author Zebord
 * @since 2020-02-15
 */
@Service
public class TenantServiceImpl extends ServiceImpl<TenantMapper, Tenant> implements ITenantService {
    @Autowired
    private TenantMapper tenantMapper;

    @Autowired
    private EmployeeMapper employeeMapper;

    @Override
    public PageList<Tenant> selectPageList(TenantQuery query) {
        //作为分页条件传入
        Page<Tenant> page = new Page<>(query.getPage(),query.getRows());

        //查询得到当前页数据
        List<Tenant> tenants = tenantMapper.loadPageList(page, query);

        //分页条件中返回了总数
        //把总数+当前页数据
        return new PageList<Tenant>(page.getTotal(),tenants);
    }

    @Override
    public boolean deleteById(Serializable id) {
        tenantMapper.deleteById(id);
        //删除中间表
        tenantMapper.deleteTenantMeal(id);
        return true;
    }

    @Override
    public boolean insert(Tenant entity) {
        //保存公司管理员信息
        Employee admin = entity.getAdmin();
        admin.setInputTime(new Date()); //输入时间
        admin.setState(0); // 正常
        admin.setType(1); //是否是租户管理员
        employeeMapper.insert(admin);
        System.out.println(admin.getId()+"号职员录入职员列表");

        //保存公司信息-要返回自增id
        entity.setAdminId(admin.getId());
        tenantMapper.insert(entity);
        System.out.println(entity.getId() + "号公司成功路入adminId");

        //修改租户的id
        admin.setTenantId(entity.getId());
        employeeMapper.updateById(admin);
        //@TODO 如果选择了套餐，还要添加套餐中间表
        return true;
    }

    @Override
    public boolean updateById(Tenant entity) {

        //修改自己信息
        //修改管理员信息
        //修改中间信息
        return super.updateById(entity);
    }
}
